/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package cz.fimuni.pa165.backendderby.services;

import cz.fimuni.pa165.backendderby.entities.Company;
import java.util.List;
import org.springframework.dao.DataAccessException;

/**
 *
 * @author Lukáš Slovák
 */
public interface CompanyService {

    /**
     * Pridá do databázy novú firmu
     *
     * @param company firma, ktorá má byť pridaná
     * @throws DataAccessException ak nastane problém na vrstve perzistencie dát
     */
    public void createCompany(Company company);

    /**
     * Zmaže z databázy danú firmu (firma s rovankým id ako má parameter). Ak sa
     * firma v databáze nenachádza, neurobí nič.
     *
     * @param company firma, ktorá má byť vymazaná
     * @throws DataAccessException ak nastane problém na vrstve perzistencie dát
     */
    public void removeCompany(Company company);

    /**
     * Upraví v databáze záznam o firme.
     *
     * @param company firma s upravenými údajmi, ktoré majú byť uložené
     * @return true, ak sa podarí upraviť údaje, false inak
     * @throws DataAccessException ak nastane problém na vrstve perzistencie dát
     */
    public boolean updateCompany(Company company);

    /**
     * Nájde v databáze záznam o firme s daným id
     *
     * @param id id firmy, ktorá sa má hľadať
     * @return true, ak sa podarí firmu nájsť, false inak
     * @throws DataAccessException ak nastane problém na vrstve perzistencie dát
     */
    public Company findCompany(Long id);

    /**
     * Vráti zoznam všetkých firiem
     *
     * @return zoznam všetkých firiem z databázy
     * @throws DataAccessException ak nastane problém na vrstve perzistencie dát
     */
    public List<Company> findAllCompanies();
}
